/**
 * Description:
 * Class Name:StringCompareTest
 * Date:2022/1/27 10:18
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第6章_面向对象_下._6_2_处理对象;

public class StringCompareTest {
    public static void main(String[] args) {
        // s1,s2,s3是常量池管理的字符串直接量，s4、s5都是编译时就可计算得出的
        var s1 = "疯狂Java";
        var s2 = "疯狂";
        var s3 = "Java";
        var s4 = "疯狂" + "Java";
        var s5 = "疯" + "狂" + "Java";

        // s6的值不能在编译时就确定下来，不能引用常量池中的字符串，所以比较时不相等
        var s6 = s2 + s3;
        // 使用new调用构造器建辉创建一个新的String对象
        // s7引用堆内存中新创建的String对象
        var s7 = new String("疯狂Java");

        System.out.println(s1 == s4);   // true
        System.out.println(s1 == s5);   // true
        System.out.println(s1 == s6);   // false
        System.out.println(s1 == s7);   // false
    }
}
